// @Name    : cai_base_http_method
// @author  : simon
// @date    : 2024/1/6 10:27
// @version : 1.0
// @desc :
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'cai_http_request.dart';

class CaiBaseHttpPortConfigure {
  //配置端口数据
  static Map<String, String> getPortMap() {
    return {
      "RUK": "9900",
      "hfwjB002": "9007",
      "syjsfA001": "9902",
      "gzzsA006": "9904",
      "cdkyA008": "9906",
      //北京众鑫明扬文化传媒有限公司
      "bjmyA010": "9908",
      //西安宇龙广告
      "xaylS001": "9910",
      //西安皓影广告
      "xahyS020": "9912",
      //西安昕花样广告
      "xahxS1018": "9914",
      //天狼传媒（新疆）有限公司
      "xjtlX1008": "9916",
      //颐佳婚庆有限公司（湖南长沙）
      "yjhqX1018": "9918",
      //湖北快捷广告传媒股份有限公司
      "hbkjX0008": "9920",
      //湖北荆州科比标识
      "hbkbX0016":"9922",
      //四川聚能广告
      "scjnC1018":"9924",
      //南京亿伙广告有限公司
      "njyhJ2018":"9926",
      //重庆美港广告有限公司
      "cqmgY1001":"9928",
      //绍兴世纪广告有限公司
      "sxsjZ5009":"9930",
      //无锡创鑫时代广告有限公司
      "wxcxJ9068":"9932",
      //(天津)新普恒业广告喷绘工厂
      "tjxpJ6018":"9934",
      //宁波艺彩广告 （数据库用阿里云）
      "nbycB1001":"9936",
      //温州文阳广告器材有限公司
      "wzwyZ1068":"9938",
      //云南智捷（数据库用阿里云）
      "ynzjY8009":"9940",
      //金华创鑫时代
      "jhcxF1009":"9942",
      //盐城铭远广告
      "ycmyS6098":"9944",
      //张家港市国色天香广告展示制作公司
      "gstxJ0729":"9946",
      //甘肃超彩广告庆阳店
      "9948":"9948",
      //武汉众秦广告
      "9950":"9950",
      //安徽智印广告传媒有限公司
      "9952":"9952",
      //上海创鑫时代
      "9956":"9956",
      //合肥亿伙
      "9958":"9958",
      //苏州昆山印之家
      "9960":"9960",
      //义乌长永
      "9962":"9962",
      //陕西艺翔
      "9964":"9964",
      //安徽芜湖三物广告
      "9966":"9966",
      //南京彩王
      "9974":"9974",
      //海南银彩广告
      "9980":"9980",
      //南京绘德喷画
      "9988":"9988",
    };
  }

  //判断是否有这个端口code（key）。用于登录页面判断key，请求中判断value。
  static bool containsPortCodeWithKey(String key) {
    Map map = CaiBaseHttpPortConfigure.getPortMap();
    var flag = map.containsKey(key);
    return flag;
  }

  //登录的时候本地保存终端号，在请求时再取出使用。
  static Future<bool> setCompanyPortNum(String portCode) async {
    String portCodeValue = portCode;
    ///是否是key，是key的话取value
    if (CaiBaseHttpPortConfigure.containsPortCodeWithKey(portCode)) {
      Map map = CaiBaseHttpPortConfigure.getPortMap();
      portCodeValue = map[portCode];
    }
    final prefs = await SharedPreferences.getInstance();
    bool flag = await prefs.setString('port', portCodeValue);
    await CaiHttpRequest.shared.changeConfig();
    return flag;
  }

  //获取终端号
  static Future<String?> getCompanyPortNum() async {
    final prefs = await SharedPreferences.getInstance();
    final value = prefs.getString('port');
    return value;
  }

  //在本地配置数据发生变更时，需要移除本地存储的老终端号
  static Future<bool> removeCompanyPortNum() async {
    final prefs = await SharedPreferences.getInstance();
    final value = prefs.remove('port');
    return value;
  }

  //url中是否有终端号
  static bool hasPortInUrl(String? url) {
    try {
      final Uri uri = Uri.parse(url??'');
      return uri.hasPort;
    } catch (e) {
      if (kDebugMode) {
        print('Error parsing URL: $e');
      }
      return false;
    }
  }
}
